package br.com.datatraffic.fiscal.entidades;

// Generated 10/07/2009 10:49:54 by Hibernate Tools 3.2.0.b9

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Cache;

/**
 * EquipamentoFaixa generated by hbm2java
 */
@Entity
@Table(name = "TBEQUIPAMENTO_FAIXA")
public class EquipamentoFaixa5 implements java.io.Serializable {

	private Long id;
	private Equipamento5 equipamento;
	private UnidadeFiscal unidadeFiscal;
	private Local5 local;
	private AcaoTicket acaoTicket;
	private String sentido;
	private Long faixa;
	private List<Trafego> trafegos = new ArrayList<Trafego>(0);
	private boolean equipamentoDeEntrada;

	public EquipamentoFaixa5() {
	}

	public EquipamentoFaixa5(Long id, Equipamento5 equipamento,
			UnidadeFiscal unidadeFiscal, Local5 local, AcaoTicket acaoTicket) {
		this.id = id;
		this.equipamento = equipamento;
		this.unidadeFiscal = unidadeFiscal;
		this.local = local;
		this.acaoTicket = acaoTicket;
	}

	public EquipamentoFaixa5(Long id, Equipamento5 equipamento,
			UnidadeFiscal unidadeFiscal, Local5 local, AcaoTicket acaoTicket,
			String sentido, Long faixa, List<Trafego> trafegos) {
		this.id = id;
		this.equipamento = equipamento;
		this.unidadeFiscal = unidadeFiscal;
		this.local = local;
		this.acaoTicket = acaoTicket;
		this.sentido = sentido;
		this.faixa = faixa;
		this.trafegos = trafegos;
	}

	@Id
	@SequenceGenerator(name = "SQ_TBEQUIPAMENTO_FAIXA", sequenceName = "SQ_TBEQUIPAMENTO_FAIXA", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SQ_TBEQUIPAMENTO_FAIXA")
	@Column(name = "EQUIPAMENTO_FAIXA_ID", unique = true, nullable = false, precision = 38, scale = 0)
	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "EQUIPAMENTO_ID", nullable = false)
	public Equipamento5 getEquipamento() {
		return this.equipamento;
	}

	public void setEquipamento(Equipamento5 equipamento) {
		this.equipamento = equipamento;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "UNIDADE_FISCAL_ID", nullable = false)
	public UnidadeFiscal getUnidadeFiscal() {
		return this.unidadeFiscal;
	}

	public void setUnidadeFiscal(UnidadeFiscal unidadeFiscal) {
		this.unidadeFiscal = unidadeFiscal;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "LOCAL_ID", nullable = false)
	public Local5 getLocal() {
		return this.local;
	}

	public void setLocal(Local5 local) {
		this.local = local;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ACAO_TICKET_ID", nullable = false)
	public AcaoTicket getAcaoTicket() {
		return this.acaoTicket;
	}

	public void setAcaoTicket(AcaoTicket acaoTicket) {
		this.acaoTicket = acaoTicket;
	}

	@Column(name = "SENTIDO", length = 50)
	public String getSentido() {
		return this.sentido;
	}

	public void setSentido(String sentido) {
		this.sentido = sentido;
	}

	@Column(name = "FAIXA", precision = 38, scale = 0)
	public Long getFaixa() {
		return this.faixa;
	}

	public void setFaixa(Long faixa) {
		this.faixa = faixa;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "equipamentoFaixa")
	public List<Trafego> getTrafegos() {
		return this.trafegos;
	}

	public void setTrafegos(List<Trafego> trafegos) {
		this.trafegos = trafegos;
	}

	@Transient
	public boolean isEquipamentoDeEntrada() {
		return AcaoTicketEnum.ABERTURA.compareTo(getAcaoTicket());
	}

	public void setEquipamentoDeEntrada(boolean equipamentoDeEntrada) {
		this.equipamentoDeEntrada = equipamentoDeEntrada;
	}

	// The following is extra code specified in the hbm.xml files
	private static final long serialVersionUID = 1L;
	// end of extra code specified in the hbm.xml files

}
